﻿using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using Ext.Net;
using Sio.Mdm.Entities;
using Sio.Mdm.Client;
using Sio.Mdm.BF.Idm;
using Sio.Mdm.BF.Sifranti;
using Sio.Mdm.Types.Database;
using Sio.Mdm.Types;
using Sio.Mdm.BF.Ldap;
using System.Collections.Generic;
namespace Sio.Mdm.Web.Organizacija
{
	public partial class OsebjePedagoskoSeznam : Controls.Page
	{
		#region Definitions
		public interface KaderRowEditData
		{
			int IdmStevilka { get; set; }
			int VlogaId { get; set; }
			string Ime { get; set; }
			string Priimek { get; set; }
			int DelovnoMestoId { get; set; }
			int NazivUciteljaId { get; set; }
			int PoklicId { get; set; }
		}
		#endregion

		#region OnLoad
		protected override void OnLoad(EventArgs e)
		{

			if (!IsPostBack && !X.IsAjaxRequest)
			{
				//delovna mesta
				EntityCollection<DelovnoMesto> delovnaMesta = new EntityCollection<DelovnoMesto>(
						new Filter<DelovnoMesto>().Where(r => r.DelovnoMestoId != null).OrderBy(r => r.Naziv)
				);
				this.StoreDelovnaMesta.DataSource = delovnaMesta;
				this.StoreDelovnaMesta.DataBind();

				//nazivi učiteljev
				EntityCollection<NazivUcitelja> nazivi = new EntityCollection<NazivUcitelja>(
						new Filter<NazivUcitelja>().Where(r => r.NazivUciteljaId != null).OrderBy(r => r.Naziv)
				);
				this.StoreNaziviUciteljev.DataSource = nazivi;
				this.StoreNaziviUciteljev.DataBind();

				//poklici
				EntityCollection<Poklic> poklici = new EntityCollection<Poklic>(
						new Filter<Poklic>().Where(r => r.PoklicId != null).OrderBy(r => r.Naziv)
				);
				this.StorePoklici.DataSource = poklici;
				this.StorePoklici.DataBind();

			}
			NaloziSeznamGrida(e);
		}
		#endregion

		#region Private
		private void NaloziSeznamGrida(EventArgs arg)
		{

			//kader
			EntityCollection<KaderPedagoski> kader = new EntityCollection<KaderPedagoski>(
					new Filter<KaderPedagoski>().Where(o => o.IdmStevilka != null && o.OrganizacijaId == this.UserSession.Organizacija));

			StoreKaderSeznam.DataSource = kader;
			StoreKaderSeznam.DataBind();
		}
		#endregion

		#region Editing
		protected void UrediPodatke(Object sender, DirectEventArgs e)
		{
			KaderRowEditData EditData = XML.Deserialize<KaderRowEditData>(e.ExtraParams["data"]);

			if (EditData.IdmStevilka > 0)
			{
				EntityCollection<KaderPedagoski> kader = new EntityCollection<KaderPedagoski>(
					new Filter<KaderPedagoski>().Where(r => r.IdmStevilka == EditData.IdmStevilka));
				if (kader.Count == 1)
				{
					kader[0].Ime = EditData.Ime;
					kader[0].Priimek = EditData.Priimek;
					kader[0].DelovnoMestoId = EditData.DelovnoMestoId;
					kader[0].NazivUciteljaId = EditData.NazivUciteljaId;
					kader[0].PoklicId = EditData.PoklicId;
					kader[0].Update();
				}
			}
		}


		protected void OdstraniKader(object sender, DirectEventArgs e)
		{
			List<int> deletedItems = e.GetIdList<int>("selected", "IdmStevilka");
			if (deletedItems.Count > 0)
			{
				EntityCollection<KaderPedagoski> col = new EntityCollection<KaderPedagoski>(
					new Filter<KaderPedagoski>().SelectByField(r => r.IdmStevilka, deletedItems.ToArray())
				);
				col.RemoveAll();
				col.Update();
			}

		}
		#endregion
	}
}
